package com.cdp.common.utils.uuid;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;

/**
 * ID生成器工具类
 *
 * @author ruoyi
 */
public class IdUtils {


    // 获取当前时分秒+毫秒，并生成10位随机数字
    public static String generateRandomNumber() {
        // 获取当前的时分秒+毫秒，格式为 HHmmssSSS
        SimpleDateFormat sdf = new SimpleDateFormat("HHmmssSSS");
        String format = sdf.format(new Date()); // 当前时分秒+毫秒

        String randomNumber = generateRandomNumber(10); // 生成10位随机数字

        // 拼接时间戳和随机数字
        String uniqueId = format + randomNumber;

        return uniqueId;
    }

    // 生成指定长度的随机数字字符串
    private static String generateRandomNumber(int length) {
        Random random = new Random();
        StringBuilder sb = new StringBuilder(length);
        for (int i = 0; i < length; i++) {
            // 生成0到9之间的随机数字
            sb.append(random.nextInt(10));
        }
        return sb.toString();
    }


    /**
     * 获取随机UUID
     *
     * @return 随机UUID
     */
    public static String randomUUID() {

        return UUID.randomUUID().toString();
    }

    /**
     * 简化的UUID，去掉了横线
     *
     * @return 简化的UUID，去掉了横线
     */
    public static String simpleUUID() {
        return UUID.randomUUID().toString(true);
    }

    /**
     * 获取随机UUID，使用性能更好的ThreadLocalRandom生成UUID
     *
     * @return 随机UUID
     */
    public static String fastUUID() {
        return UUID.fastUUID().toString();
    }

    /**
     * 简化的UUID，去掉了横线，使用性能更好的ThreadLocalRandom生成UUID
     *
     * @return 简化的UUID，去掉了横线
     */
    public static String fastSimpleUUID() {
        return UUID.fastUUID().toString(true);
    }
}
